/*
1.Promise 就是一个类，再执行这个类的时候，需要传递一个执行器进去，执行器会立即执行
2.Promise 中有三种状态  分别为 成功 fulfilled 失败 rejected 等待 pending
pending --> fulfilled
pending --> rejected
一旦状态确定就不可以更改
3.resolve 和rejected函数是用来更改状态的
resolve ：fulfilled
reject:rejected
4.then方法内部做的事情，就是判断状态，如果状态是成功，就调用成功函数
如果状态是失败，就调用失败函数
then方法是被定义再原型对象中的
5.then成功回调之后有一个参数，表示成功之后的值，then失败以后有一个参数，表示失败之后的原因
*/
const MyPromise = require('./myPromise')
let promise = new MyPromise((resolve, rejected) => {
    setTimeout(() => {
        rejected('失败')
        // throw new Error('executor erroe')
        // resolve('成功')
    }, 2000)

    // rejected('失败')
})
promise.finally(()=>{
    console.log('finally')
})
promise.then(res=>{}).catch(reason=>{console.log(reason)})
// function other(){
//     return new MyPromise((resolve,rejected)=>{resolve(2)})
// }
MyPromise.all([1,2,3,4]).then(res=>{console.log(res)})
let p1 = promise.then((value) => {
    console.log(value)
    throw new Error('then error')
    return 100
}, (reson) => { });
MyPromise.resolve(100).then(res=>{console.log(res)})

// promise.then((value) => {
//     console.log(value)
// }, (reson) => { })
// promise.then((value) => {
//     console.log(value)
// }, (reson) => { })

